package cn.itcast.nems.studentrecord.dao.dataobject;

import lombok.Data;

import java.io.Serializable;
import java.time.LocalDate;

/**
 * 功能描述: 学员信息查询-学籍信息
 *
 * @author 陈早庆
 * @update:[变更日期2023年11月30日][更改人姓名][变更描述]
 * @since 2023年11月30日
 */
@Data
public class StudentRecordInfoDO implements Serializable {
    /**
     * 学籍编号
     */
    private String id;
    /**
     * 班级ID
     */
    private Integer clazzId;
    /**
     * 班级名称
     */
    private String clazzName;
    /**
     * 状态;枚举值：未生效｜PENDING、生效｜VALID、失效｜INVALID、结课｜FINISHED。注：非结课出班后学籍状态变为“失效”
     */
    private String state;
    /**
     * 进班时间
     */
    private String inDate;
    /**
     * 出班时间
     */
    private String settlementDate;
    /**
     * 1：已转班）2：待定班
     */
    private Integer settlementType;

    /**
     * 优惠金额总额
     */
    private String discountAmount;

    /**
     * 调整金额
     */
    private String adjustmentAmount;
    /**
     * 退费合计
     */
    private String refundAmount;
    /**
     * 执行价格
     */
    private String price;
    /**
     * 已付金额
     */
    private String paidAmount;
    /**
     * 转班转入金额
     */
    private String transferFromAmount;
    /**
     * 应付金额
     */
    private String amountDue;
    /**
     * 实际应付金额;应付金额-调整金额，但可根据实际业务情况调整。如，基于现有业务规则同学科转班就算有差价也无需补差价，此时该金额就等于上一个学籍结余的金额
     */
    private String actualAmountDue;
    /**
     * 应付金额-已付金额-“转班转入金额”=剩余应付
     */
    private String oweAmount;
    /**
     * 剩余应付金额
     */
    private String balanceAmountDue;
    /**
     * 缴费状态  0|未完成缴费、1|已完成缴费
     */
    private Integer paidState ;
//    /**
//     * 支付信息
//     */
//    private List<StudentRecordFundFlowInfoDO> ListStudentRecordFundFlowInfo;
//    /**
//     * 发票信息
//     */
//    private List<StudentRecordFundFlowInvoiceInfoDO> ListStudentRecordFundFlowInvoiceInfo;
    /**
     * 转出金额 = SUM(费用转出金额) + 转班转出金额；转班转出金额 = 已付金额 + 转入金额 - SUM(费用转出金额) - 退费金额 - 课耗金额（在转班相关凭单审批通过时计算，不可为负数，负数时该值为0）
     */
    private String transferOutAmount;
    /**
     * 出班结算原因;中文描述。如：转班、休学、进待定班、结课等
     */
    private String settlementReason;
    /**
     * 进班状态分为：未进班、未开班、已出班、当前就读；
     */
    private String inClazzState;
    /**
     * 开班日期
     */
    private LocalDate startDate;
    /**
     * 当前所在班级的预计结课日期
     */
    private LocalDate predictionGraduationDate;
    /**
     * 学科名称
     */
    private String subjectName;

    /**
     * 学籍备注
     */
    private String remark;

    /**
     * 出班结算实际结算金额;结算金额 = 课时费 = 结算天数*(实际应付金额/课程天数)
     */
    private String settlementAmount;

    /**
     * 应服务天数
     */
    private Integer serviceDays;

    /**
     * 出班结算实际结算天数;结算天数 = 上课天数（出班日期-入班日期）
     */
    private Integer settlementDays;

    private Boolean lockFlag;
}
